package com.dwxt.cdms.util;


import com.dwxt.cdms.entity.base.DictValue;
import com.dwxt.cdms.service.DictValueService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * 数据字典工具类
 *
 * @author Kuang.JiaZhuo
 * @date 2020-07-27 10:41
 */
@Component
public class DictUtil {

    private static DictValueService dictValueService;

    @Autowired
    public void setDictBasicService(DictValueService dictBasicService) {
        DictUtil.dictValueService = dictBasicService;
    }

    /**
     * @方法名：getDisplay
     * @描述： 通过数据字典code跟value读取display显示值
     * @作者： kjz
     * @日期： Created in 2020/3/12 20:33
     */
    public static String getDisplay(String code, String value) {
        if (StringUtils.isBlank(code) || StringUtils.isBlank(value) || "null".equals(value)) {
            return null;
        }

        String result = "";

        List<DictValue> dictList = dictValueService.selectDictByCode(code);
        for (DictValue dictValue : dictList) {
            if (value.equals(String.valueOf(dictValue.getDictValue()))) {
                result = dictValue.getDictDisplay();
                break;
            }
        }
        return result;
    }

    /**
     * @方法名：getValue
     * @描述： 通过code和display得到value
     * @作者： kjz
     * @日期： Created in 2020/3/17 23:07
     */
    public static String getValue(String code, String display) {
        if (StringUtils.isBlank(code) || StringUtils.isBlank(display) || "null".equals(display)) {
            return null;
        }

        List<DictValue> dictList = dictValueService.selectDictByCode(code);

        String result = "";

        for (DictValue dictValue : dictList) {
            if (display.equals(String.valueOf(dictValue.getDictDisplay()))) {
                result = dictValue.getDictValue();
                break;
            }
        }
        return result;
    }


    //刷新数据字典缓存
    public static void refreshDict(){
        dictValueService.flushDictCache();
    }
}